//引入路由对象
import { createRouter, createWebHashHistory } from "vue-router"
import { showNotify, showToast } from 'vant'
import { useUserStore } from '@/store/user.js'
import ApiList from '@/api'


// 引入每个目录下面的index.js文件
const ModulesFile = import.meta.globEager("./*/index.js")
// 定义一个存放路由数组
const routes = []

// 提取每个对象下的值 同步获取
Object.values(ModulesFile).map(async mod => {
  if (mod.default) {
    routes.push(...mod.default)
  }
})

// 引入首页
import Home from '@/components/Home.vue'

// 把首页追加数组
routes.push({
  path: '/',
  name: 'home',
  component: Home
})

//路由对象
const router = createRouter({
  history: createWebHashHistory(), //路由的模式
  linkExactActiveClass: 'active',  //点击路由跳转的底部样式标量
  //路由列表
  routes
})

router.beforeEach(async (to, from, next) => {
  const userStore = useUserStore()
  let { userInfo } = userStore
  //true为需要登录验证
  if (to.meta.auth) {
    //如果有用户信息
    if (userInfo.id) {
      let { mobile, id: busid } = userInfo
      let res = await ApiList.check({ mobile, busid })//验证已有的用户信息是否存在数据库
      if (res.code == 0) {
        //非法登录
        showNotify({
          type: 'warning',
          message: res.msg,
        })
        userStore.$patch(state=>{
          state.userInfo = {}
        })
        localStorage.removeItem('userInfo')
        next('/business/base/login')
      }else {
        //更新用户信息
        userStore.$patch((state)=>{
          state.userInfo = res.data
        })
        next()
      }
    } else {
      showToast({
        type: 'fail',
        message: '请先登录',
      })
      next('/business/base/login')
    }
  } else {
    //放行不用登录验证的路由
    next()
  }
})

//创建路由
export default router